C# Lire / Ecrire dans un fichier - Méthode 1 Stream et la deuxième consiste à utiliser les méthodes de la classe File du namespace System.IO.StreamReader. StreamReader est une classe, donc comme toute classe elle possède des constructeurs, voici celui qui nous intéresse:public StreamReader(string path);
StreamWriter. StreamWriter est une classe, donc comme toute classe elle possède des constructeurs, voici celui qui nous intéresse:public StreamWriter(string path);
using System.IO;
try
{
StreamReader sr = new StreamReader("file.txt"); // ou StreamWriter sw = new StreamWriter("file.txt");
// read/write file
sr.Close(); // ou sw.Close();
}
catch
{
// handle exception
}
System.IO qui contient la classe StreamReader.file.txt en utilisant le constructeur StreamReader(string).try-catch.try
{
using (StreamReader sr = new StreamReader("file.txt")) // ou StreamWriter sw = new StreamWriter("file.txt")
{
// read/write file
}
}
catch
{
// handle exception
}
usingClose pour fermer le streamusing est une sorte de raccourci pour ouvrir un stream et le fermer automatiquement à la fin du bloc. C'est une bonne pratique de l'utiliser pour éviter d'oublier de fermer un stream. Vous serez alors sûr que dans tous les cas, le stream sera fermé.StreamReader.StreamReader:public string ReadLine(); // lit une ligne
public string ReadToEnd(); // lit tout le fichier à partir de la position actuelle
public int Read(); // lit un caractère
using System.IO;
try
{
using (StreamReader sr = new StreamReader("file.txt"))
{
string line = sr.ReadLine();
if (line != null)
Console.WriteLine(line);
else
Console.WriteLine("File is empty");
}
}
catch (Exception ex)
{
Console.WriteLine("The file could not be read:");
}
ReadLine permet de lire une ligne du fichier. Si la ligne ça veut dire qu'on a atteint la fin du fichier.ReadLine, je vais lire la première ligne du fichier.ReadLine retourne null. On peut alors afficher un message pour dire que le fichier est vide.using System.IO;
try
{
using (StreamReader sr = new StreamReader("file.txt"))
{
string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (Exception ex)
{
Console.WriteLine("The file could not be read:");
}
ReadLine, le curseur vient se placer à la fin de la ligne. Ainsi au prochain appel à ReadLine, on lira la ligne suivante, et ainsi de suite jusqu'à la fin du fichier.while ((line = sr.ReadLine()) != null) peut peut-être vous surprendre. En fait, il est possible d'affecter une valeur à une variable dans une condition, le tout est de le mettre entre parentheses. Ainsi, ici, à chaque tour de boucle quand on arrive sur la condition, on lit une nouvelle ligne et on vérifie que l'on est pas arrivé à la fin du fichier (que ma ligne n'est pas null).I
love
my
ACDCs
file.txtline="I"). On l'affiche donc. Le curseur est déplacé ligne 2.line="love"). On l'affiche donc. Le curseur est déplacé ligne 3.line="my"). On l'affiche donc. Le curseur est déplacé ligne 4.line="ACDC"). On l'affiche donc. Le curseur est déplacé ligne 5.usingReadLine différencie les lignes vides et la fin du fichier. Si vous lisez une ligne vide, la fonction retourne une chaine vide ("". Si vous lisez la fin du fichier, la fonction retourne null.using System.IO;
try
{
using (StreamReader sr = new StreamReader("file.txt"))
{
string file = sr.ReadToEnd();
Console.WriteLine(file);
}
}
catch (Exception ex)
{
Console.WriteLine("The file could not be read:");
}
ReadToEnd permet de lire tout le fichier à partir de la position actuelle. Ici, la position actuelle est au début du fichier. Donc on lit tout le fichier.ReadToEnd retourne une string. On peut alors l'afficher.ReadToEnd ne lit pas tout le fichier, il lit tout le fichier à partir de la position actuelle. Donc si vous avez déjà lu une ligne, la fonction lira le fichier à partir de la ligne suivante.StreamWriter.StreamWriter:public void Write(string value); // écrit une chaine
public void WriteLine(string value); // écrit une chaine et saute une ligne
public void Write(char value); // écrit un caractère
public void WriteLine(); // saute une ligne
using System.IO;
try
{
using (StreamWriter sw = new StreamWriter("file.txt"))
{
sw.WriteLine("I");
sw.Write("lo");
sw.WriteLine("ve");
sw.Write("my");
sw.WriteLine();
sw.Write('A');
sw.Write("CD");
sw.WriteLine("Cs");
}
}
catch (Exception ex)
{
Console.WriteLine("The file could not be written:");
}
I
love
my
ACDCs
file.txt"I" dans le fichier (sautant une ligne)"lo" dans le fichier (sans saut de ligne)"ve" dans le fichier (sautant une ligne)"my" dans le fichier (sans saut de ligne)'A' dans le fichier (sans saut de ligne)"CD" dans le fichier (sans saut de ligne)"Cs" dans le fichier (sautant une ligne)usingStreamWriter écrasera le contenu du fichier. Si vous voulez ajouter du contenu à un fichier existant, il faudra rajouter le paramètre true au constructeur de StreamWriter pour activer le mode append.using System.IO;
try
{
using (StreamWriter sw = new StreamWriter("file.txt", true)) // true pour activer le mode append
{
sw.WriteLine("I append to my file instead of overwriting it");
}
}
catch (Exception ex)
{
Console.WriteLine("The file could not be written:");
}
I
love
my
ACDCs
I append to my file instead of overwriting it
file.txt que l'on a créé précédemment.Lire / Ecrire dans un fichier - Méthode 2 File du namespace System.IO.File.public static string ReadAllText (string path);
public static string[] ReadAllLines (string path);
using System.IO;
try
{
string file = File.ReadAllText("file.txt");
Console.WriteLine(file);
}
catch (Exception ex)
{
Console.WriteLine("The file could not be read:");
}
ReadAllText permet de lire tout le fichier d'un coup. Elle retourne une string contenant tout le contenu du fichier.using System.IO;
try
{
string[] lines = File.ReadAllLines("file.txt");
foreach (string line in lines)
{
Console.WriteLine(line);
}
}
catch (Exception ex)
{
Console.WriteLine("The file could not be read:");
}
ReadAllLines permet de lire le fichier ligne par ligne. Elle retourne un tableau de string ou chaque élément du tableau correspond à une ligne du fichier.File.public static void WriteAllText (string path, string contents);
public static void WriteAllLines (string path, string[] contents);
using System.IO;
try
{
File.WriteAllText("file.txt", "I\nlove\nmy\nACDCs");
}
catch (Exception ex)
{
Console.WriteLine("The file could not be written:");
}
WriteAllText permet d'écrire tout le contenu du fichier d'un coup. Le premier paramètre est le chemin du fichier, le deuxième est le contenu à écrire.using System.IO;
try
{
string[] lines = { "I", "love", "my", "ACDCs" };
File.WriteAllLines("file.txt", lines);
}
catch (Exception ex)
{
Console.WriteLine("The file could not be written:");
}
WriteAllLines permet d'écrire le contenu du fichier ligne par ligne. Le premier paramètre est le chemin du fichier, le deuxième est un tableau de string contenant les lignes à écrire.WriteAllText et WriteAllLines écraseront le contenu du fichier. Si vous voulez ajouter du contenu à un fichier existant, il faudra utiliser les méthodes AppendAllText et AppendAllLines de la classe File, qui fonctionnent de la même manière que les méthodes WriteAllText et WriteAllLines mais ajoutent le contenu au fichier au lieu de l'écraser.Créer / Supprimer des fichiers File du namespace System.IO. Voici un exemple de code pour créer un fichier:public static System.IO.FileStream Create (string path);
using System.IO;
try
{
File.Create("file.txt").Close();
}
catch (Exception ex)
{
// handle exception
}
Close ou Dispose) pour éviter tout problème.Delete de la classe File du namespace System.IO. Voici un exemple de code pour supprimer un fichier:public static void Delete (string path);
using System.IO;
try
{
File.Delete("file.txt");
}
catch (Exception ex)
{
// handle exception
}